package cn.openea.perpartner.meily.web.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @author ysk
 * @email zane_ysk@qq.com
 * @date 2023-03-27 11:37:04
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@TableName("meily_provide_samples_sub")
public class ProvideSamplesSub implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    @TableId
    private String id;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private String createTime;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateTime;
    /**
     * 发起人id
     */
    @NotBlank
    private String initiatorId;
    /**
     * 发起人昵称
     */
    @NotBlank
    private String initiatorName;
    /**
     * 参与者id
     */
    @NotBlank
    private String partnerId;
    /**
     * 参与者昵称
     */
    @NotBlank
    private String partnerName;
    /**
     * 参与者头像
     */
    @NotBlank
    private String partnerAvatarUrl;
    /**
     * 标题
     */
    @NotBlank
    private String subject;
    /**
     * 工单号
     */
    private String taskNumber;
    /**
     * 报名截止时间
     */
    @NotBlank
    private String joinEndTime;
    /**
     * 结束时间
     */
    @NotBlank
    private String endTime;
    /**
     * 主文档id
     */
    @NotBlank
    private String mainId;
    /**
     * 主工单号
     */
    @NotBlank
    private String mainTaskNumber;
    /**
     * 定制id
     */
    @NotBlank
    private String sceneAssetsId;
    /**
     * 场景id
     */
    @NotBlank
    private String sceneId;
    /**
     * 收货人姓名
     */
    private String consigneeName;
    /**
     * 手机号码
     */
    private String consigneePhoneNum;
    /**
     * 收货地址
     */
    private String consigneeAddress;
    /**
     * 订单备注
     */
    private String orderRemarks;
    /**
     * 订单状态：待支付、待发货、已发货、已完成、已评价、已作废；(默认待发货)
     */
    @NotBlank
    private String orderStatus;
    /**
     * 物流公司名称
     */
    private String courierName;
    /**
     * 物流单号
     */
    private String courierNumber;
    /**
     * 发货时间
     */
    private String deliveryGoodsTime;
    /**
     * 确认收货时间
     */
    private String receivingTime;
    /**
     * 区域服务商userid
     */
    private String supplierId;
    /**
     * 区域服务商昵称
     */
    private String supplierName;
    /**
     * 区域服务商json串
     */
    private String supplier;
    /**
     * 样品价格（元）
     */
    @NotNull
    private BigDecimal samplePrice;
    /**
     * 商品id
     */
    @NotBlank
    private String goodsId;
    /**
     * 商品编号
     */
    private String goodsNo;
    /**
     * 商品名称
     */
    private String goodsName;
    /**
     * 商品图
     */
    private String goodsImages;
    /**
     * 商品规格
     */
    private String specification;
    /**
     * 支付订单号
     */
    private String orderId;
    /**
     * 领取数量
     */
    private String quantity;
    /**
     * 支付金额
     */
    private String payAmount;
    /**
     * {@link cn.openea.perpartner.meily.constant.enums.ExpressCompany}
     * 对应枚举
     */
    private String expressCompanyCode;

    /**
     * 物流状态。揽收,在途,派件,签收,暂无物流
     */
    private String logisticsStatus;

    /**
     * 开启反馈。0:不开启；1:开启；
     */
    private String enableFeedback;

    /**
     * 是否已发送反馈通知。true:已发送；false:未发送;
     */
    private String sendFeedback = "false";

    /**
     * 反馈内容（试用报告）
     */
    private String feedbackContent;

    /**
     * 反馈图片地址（试用素材）
     */
    private String feedbackPictures;

    /**
     * 社交平台截图凭证
     */
    private String socialPlatformPictures;

    /**
     * 评价等级。A、B、C
     */
    private String grade;

    /**
     * 评价报酬
     */
    private BigDecimal reward;

    /**
     * 判断当前业务是否完成
     */
    public boolean businessCompletion(){
        return "已完成".equals(orderStatus) || "已评价".equals(orderStatus);
    }

    /**
     * 优惠券金额
     */
    private BigDecimal couponAmount = BigDecimal.ZERO;

    /**
     * 优惠券适用范围。0此商品；1全部商品
     */
    private String couponRange;

    /**
     * 是否使用抵扣。0:不使用；1:使用；(默认0)
     */
    private String useDeduction = "0";

    /**
     * 抵扣金额
     */
    private BigDecimal deductionAmount = BigDecimal.ZERO;

    @ApiModelProperty("实物")
    private String entity;
    @ApiModelProperty(value = "退款订单号")
    private String refundNo;
    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundAmount = BigDecimal.ZERO;
    @ApiModelProperty(value = "退款时间")
    private String refundTime;
}
